home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / TUTORIAL.BIN / StateCheckBox.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-16  |  2.7 KB  |  154 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Dimension;
  7. import java.awt.Event;
  8. import java.awt.Graphics;
  9.  
  10. public class StateCheckBox extends Canvas {
  11.    private static final int WIDTH = 14;
  12.    private static final int HEIGHT = 14;
  13.    public static final int TWO_STATE = 0;
  14.    public static final int THREE_STATE = 1;
  15.    public static final int STATE_UNCHECKED = 0;
  16.    public static final int STATE_CHECKED = 1;
  17.    public static final int STATE_DEFAULT = 2;
  18.    private boolean enabled;
  19.    private boolean pressed;
  20.    private boolean released;
  21.    private int width = 14;
  22.    private int height = 14;
  23.    private int state = 0;
  24.    private int type = 0;
  25.  
  26.    public StateCheckBox() {
  27.       this.state = 0;
  28.       this.pressed = false;
  29.       this.released = true;
  30.       this.enabled = true;
  31.    }
  32.  
  33.    public void setStyle(int var1) {
  34.       this.type = var1;
  35.       ((Component)this).invalidate();
  36.    }
  37.  
  38.    public int getStyle() {
  39.       return this.type;
  40.    }
  41.  
  42.    public int getState() {
  43.       return this.state;
  44.    }
  45.  
  46.    public void setState(int var1) {
  47.       if (this.state != var1) {
  48.          this.state = var1;
  49.          ((Component)this).invalidate();
  50.       }
  51.  
  52.    }
  53.  
  54.    public boolean mouseDown(Event var1, int var2, int var3) {
  55.       this.pressed = true;
  56.       this.released = false;
  57.       ((Component)this).repaint();
  58.       return true;
  59.    }
  60.  
  61.    public boolean mouseUp(Event var1, int var2, int var3) {
  62.       if (this.pressed) {
  63.          this.pressed = false;
  64.          this.state = (this.state + 1) % (this.type == 0 ? 2 : 3);
  65.          ((Component)this).repaint();
  66.          ((Component)this).postEvent(new Event(this, 1001, (Object)null));
  67.       }
  68.  
  69.       this.released = true;
  70.       return true;
  71.    }
  72.  
  73.    public boolean mouseEnter(Event var1, int var2, int var3) {
  74.       if (!this.released) {
  75.          this.mouseDown(var1, var2, var3);
  76.       }
  77.  
  78.       return true;
  79.    }
  80.  
  81.    public boolean mouseExit(Event var1, int var2, int var3) {
  82.       if (this.pressed) {
  83.          this.pressed = false;
  84.          ((Component)this).repaint();
  85.       }
  86.  
  87.       return true;
  88.    }
  89.  
  90.    public void reshape(int var1, int var2, int var3, int var4) {
  91.       this.width = 14;
  92.       this.height = 14;
  93.       super.reshape(var1, var2, var3, var4);
  94.    }
  95.  
  96.    public Dimension preferredSize() {
  97.       return new Dimension(this.width, this.height);
  98.    }
  99.  
  100.    public synchronized void enable() {
  101.       if (!this.enabled) {
  102.          this.enabled = true;
  103.          ((Component)this).repaint();
  104.       }
  105.  
  106.       super.enable();
  107.    }
  108.  
  109.    public synchronized void disable() {
  110.       if (this.enabled) {
  111.          this.enabled = false;
  112.          ((Component)this).repaint();
  113.       }
  114.  
  115.       super.disable();
  116.    }
  117.  
  118.    public void paint(Graphics var1) {
  119.       var1.clipRect(0, 0, this.width, this.height);
  120.       var1.setColor(Color.white);
  121.       var1.fillRect(0, 0, this.width, this.height);
  122.       int var2 = this.width - 1;
  123.       int var3 = this.height - 1;
  124.       if (this.pressed) {
  125.          var1.setColor(Color.lightGray);
  126.          var1.fillRect(2, 2, var2 - 4, var3 - 4);
  127.       }
  128.  
  129.       var1.setColor(Color.gray);
  130.       var1.drawLine(0, var3 - 1, 0, 0);
  131.       var1.drawLine(0, 0, var2 - 1, 0);
  132.       var1.setColor(Color.lightGray);
  133.       var1.drawLine(1, var3 - 2, var2 - 2, var3 - 2);
  134.       var1.drawLine(var2 - 2, var3 - 2, var2 - 2, 1);
  135.       var1.setColor(Color.black);
  136.       var1.drawLine(1, var3 - 2, 1, 1);
  137.       var1.drawLine(1, 1, var2 - 2, 1);
  138.       switch (this.state) {
  139.          case 2:
  140.             var1.setColor(Color.lightGray);
  141.             var1.fillRect(2, 2, var2 - 4, var3 - 4);
  142.             var1.setColor(Color.black);
  143.          case 1:
  144.             for(int var4 = 0; var4 < 3; ++var4) {
  145.                var1.drawLine(3, 5 + var4, 5, 7 + var4);
  146.                var1.drawLine(5, 7 + var4, 9, 3 + var4);
  147.             }
  148.  
  149.             return;
  150.          default:
  151.       }
  152.    }
  153. }
  154.